The first thing pop out is using DOI as indexes, it is unique and can lead to the reference information through online api.
And there have been some implements on doi-based-citations functions in Franklin (see the functions of Leon Bilton's Blog HERE).
However, after a test on the DOI based solutions, I gave them up, for:
The online-API-based reference requests were not stable, it happens (a lot) that the references cannot be get;
The insertion gramma is too complex, consider if I would insert three articles in the same place, I'd write {{citedoi 10.1046/j.1365-294X.2002.01643.x 10.1159/000070664 10.1038/nature02168}}, infact I cannot remember which doi links to which article, it is painful if I would like to change one ref to another.
The build time for my blog would become too long, for HTTP connections (and it may finally fail)
Then I went back to my Zotero research manager. Zotero automatically generates Citation Key for each record, the key is informative with format of year-1stAuthor-ShortTitle (eg. 2020-Burgess-Guidelines-WOR), which is perfect for being my indexes. So I have decided to make my Citation Functions based on my Zotero BibTex Database. The pros are obvious:
A more readable/meaningful cite key;
Local parse, faster and more stable;
I can easily search for articles through Zotero and get the cite key;
The BibTex is informative, that I could DIY a lot: say I want the output index format be (Author1 et al. Year1, Author2 et al. Year2), and to show up to three authors in the reference list, and add urls to the article title of the reference list. All can do !
By the implementation above, I could insert citation(s) through {{citebib CiteKey1 CiteKey2 ...}}, and add a {{citebiblist}} to the end of the file, then everything will work smoothly!
I'll get this:
... has been well discussed in Pandey's work on evolution of unilateral incompatibility in flowering plants and Pla's work on ABA cis-regulators
(Pandey 1981, Pla et al. 1993)
.
... Please refer to Bilinski's work on the adaptive evolution of genome size in maize
(Bilinski et al. 2018)
.
There are several flaws for this primary implementation:
The BibTex should be strictly formated: the title, author, year information should be provided.
The Reference List is ordered as the first cited article get first, not by year or alphabetically.
The in situ indexes are not checked to make sure they are unique:
say if you insert two articles published on 2022 by Wang Dabao and Wang Erbao respectively, the indexes would both be Wang 2022, which should be Wang 2022a and Wang 2022b, but the links are correct, so I'll live with it (after all, it's a blog, not a journal).